From: Colin Walters Date: Tue, 14 Jun 2011 20:06:31 +0000 (-0400) Subject: shell_global_set_property_mutable: Remove X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~8167 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=26aa4333a55bbc06ae8abaaa41f2195027b09e06;p=gnome-shell.git shell_global_set_property_mutable: Remove All introspection properties are now writable; See https://bugzilla.gnome.org/show_bug.cgi?id=646633 https://bugzilla.gnome.org/show_bug.cgi?id=652597 --- diff --git a/js/ui/environment.js b/js/ui/environment.js index 93c6b39b6..d499219aa 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -70,12 +70,6 @@ function init() { return base; }; - // Now close the back door to prevent extensions from trying to - // abuse it. We can't actually delete it since - // Shell.Global.prototype itself is read-only. - global.set_property_mutable('imports.gi.Shell.Global.prototype', 'set_property_mutable', true); - Shell.Global.prototype.set_property_mutable = undefined; - // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783 Date.prototype.toLocaleFormat = function(format) { return Shell.util_format_date(format, this.getTime()); diff --git a/src/shell-global.c b/src/shell-global.c index 84b35db75..ceb3078fc 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -1482,73 +1482,6 @@ shell_global_create_app_launch_context (ShellGlobal *global) return (GAppLaunchContext *)context; } -/** - * shell_global_set_property_mutable: - * @global: the #ShellGlobal - * @object: the "path" to a JS object, starting from the root object. - * (Eg, "global.stage" or "imports.gi.Gtk.Window.prototype") - * @property: a property on @object - * @mutable: %TRUE or %FALSE - * - * If @mutable is %TRUE, this clears the "permanent" and "readonly" flags - * on @property of @object. If @mutable is %FALSE, it sets them. - * - * You can use this to make it possible to modify properties that - * would otherwise be read-only from JavaScript. - * - * Return value: success or failure. - */ -gboolean -shell_global_set_property_mutable (ShellGlobal *global, - const char *object, - const char *property, - gboolean mutable) -{ - JSContext *context = gjs_context_get_native_context (global->js_context); - char **parts; - JSObject *obj; - jsval val = JSVAL_VOID; - int i; - jsuint attrs; - JSBool found; - - JS_BeginRequest (context); - JS_AddValueRoot (context, &val); - - parts = g_strsplit (object, ".", -1); - obj = JS_GetGlobalObject (context); - for (i = 0; parts[i]; i++) - { - if (!JS_GetProperty (context, obj, parts[i], &val)) - { - g_strfreev (parts); - goto out_error; - } - obj = JSVAL_TO_OBJECT (val); - } - g_strfreev (parts); - - if (!JS_GetPropertyAttributes (context, obj, property, &attrs, &found) || !found) - goto out_error; - - if (mutable) - attrs &= ~(JSPROP_PERMANENT | JSPROP_READONLY); - else - attrs |= (JSPROP_PERMANENT | JSPROP_READONLY); - - if (!JS_SetPropertyAttributes (context, obj, property, attrs, &found)) - goto out_error; - - JS_RemoveValueRoot (context, &val); - JS_EndRequest (context); - return TRUE; - out_error: - gjs_log_exception (context, NULL); - JS_RemoveValueRoot (context, &val); - JS_EndRequest (context); - return FALSE; -} - typedef struct { ShellLeisureFunction func; diff --git a/src/shell-global.h b/src/shell-global.h index d6f4c33a7..7c1c7bb83 100644 --- a/src/shell-global.h +++ b/src/shell-global.h @@ -105,12 +105,6 @@ void shell_global_get_memory_info (ShellGlobal *global, ShellMemoryInfo *meminfo); -gboolean shell_global_set_property_mutable (ShellGlobal *global, - const char *object, - const char *property, - gboolean mutable); - - /* Run-at-leisure API */ void shell_global_begin_work (ShellGlobal *global); void shell_global_end_work (ShellGlobal *global);